﻿#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QTreeWidget>
#include <QClipboard>
#include <QDateTime>
#include <QMessageBox>
#include <QDebug>
#include <QMap>
#include <QCryptographicHash>
#include "aesni/qaesencryption.h"
#define AES_KEY "CJJM2501"


QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();
    void initTreeWidget(); //初始化树控件
    void partiallyCheck(QTreeWidgetItem* item, int checkState); //与itemClicked信号相连，当有触发信号时，会传递参数，判断操作是那个节点

public slots:
    void treeCheck(QTreeWidgetItem* item, int column); //复选框的处理函数

private slots:
    void on_push_clear_clicked();  //清空界面内容
    void on_push_copy_clicked();  //复制授权码
    void on_push_Authorization_clicked();  //生成授权码
    int judgeRepeat(QTreeWidgetItem* item); //机型id去重
    QString AES_encryption(const QString  data, const QString key); //加密

private:
    Ui::MainWindow *ui;
    QTreeWidget* licenseModule;  //授权机型模块的树控件
    QDate m_CurrentDate; //系统当前日期
    QDate m_StartDate; //系统当前日期
    QDate m_EndDate; //系统当前日期
    QString m_MachineCodeStr; //机器码
    QVector<int>  m_LicensePlaneTypeVec; //授权的机型
    QString m_LicensePlaneTypeStr; //授权机型
    QString m_LicenseDateRangeStr; //授权日期范围
    QMap <QTreeWidgetItem*,int> m_PlaneTypeIDItemMap; //存放机型id和Item
    QString m_BeforeEncryption; //加密前字符串
    QString m_AfterEncryption; //加密后字符串

};
#endif // MAINWINDOW_H
